﻿#pragma once

#include "../database.h"

#include <QSqlDataBase>
#include <QSqlQuery>
#include <QSqlRecord>
#include <QReadWriteLock>



class DataBaseSql : public DataBase
{
public:
	DataBaseSql(const QString &path);
	~DataBaseSql ();
	// 创建表，表的格式固定（INT TXT: id, data）
	virtual bool CreateDBTable(const QString& table) override;

	// 增加数据
	virtual bool AddData(const QString& table, int id, const QByteArray& data) override;

	// 删除数据（通过id判断, id = 0 删除全部数据）
	virtual bool DeleteData(const QString& table, int id = 0) override;

	// 更新数据
	virtual bool UpdateData(const QString& table, int id, const QByteArray& data) override;
	// 读取数据
	virtual QByteArrayList ReadDataById(const QString& table, int id) override;

private:
	/*判断表内是否存在该条数据*/
	bool IfTableHasId(const QString& tablename, int id);

	/*判断表是否存在*/
	bool IfTableExist(const QString& tablename);

private:
	QReadWriteLock rw_lock;
	QSqlDatabase m_db;
};
